<?php

require_once 'ExtratorAbstrato.php';
require_once 'FiltroTags.php';

/**
 * @author tsalles
 * @copyright 2008
 */

class ExtratorFilmesPaginaUnica extends ExtratorAbstrato {
    
    public function ExtratorFilmes() {
        
    }
    
   /**
    * Realiza a filtragem tratando apenas os elementos XML_ELEMENT_NODE,
    * analisando o nome da tag, o atributo e o respectivo valor.
    */
    public function aplicaFiltro(DOMDocument $doc, 
                                     $conteudo, 
                                     $filtro) {
        $filmeDescoberto = array();
        $titulo = $doc->getElementsByTagName("h1")->item(0);
        
        $regexpFilme = "/(?<nome>.*)\((?<ano>[0-9]*)\)/";
        $valor = $titulo->nodeValue;
        if (preg_match($regexpFilme, $valor, $match)) {
          if ($match[nome] == "" || $match[ano] == "") {
            continue;      
          }
          $nome = str_replace("", "\"", rtrim($match[nome]));
          $filmeDescoberto[0]->nome = $nome;
          $filmeDescoberto[0]->ano = $match[ano];
          
              $url = "";
              $links = $doc->getElementsByTagName("a");
              for ($a = 0; $a < $links->length; $a++) {
                $ln = $links->item($a);
                if (strcmp(rtrim($ln->nodeValue), rtrim("full summary")) == 0) {
                  $url = $ln->getAttribute("href");
                  break;
                }
              }
          
          $filmeDescoberto[0]->sinopses = $this->obtemSinopse($url);
        }
        return $filmeDescoberto;
  }
  
  private function obtemSinopse($url) {
    // URL SINOPSES: http://www.imdb.com/$url/plotsummary
    $url = "http://www.imdb.com{$url}";
    $crawlerSinopse = new CrawlerSinopse();
    $crawlerSinopse->inicia($url);  
    $sinopses = $crawlerSinopse->obtemSinopse();
    return $sinopses;   
  }
  
}

?>